package com.imut.lagain.service;
import org.slf4j.LoggerFactory;

import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
 * 文件上传服务接口
 */
public interface IFileUploadService {
    
    /**
     * 上传单个文件
     * @param file 文件
     * @param userId 用户ID
     * @param category 文件分类（images/audio/video）
     * @return 上传结果
     */
    Map<String, Object> uploadSingleFile(MultipartFile file, Long userId, String category);
    
    /**
     * 批量上传文件
     * @param files 文件列表
     * @param userId 用户ID
     * @param category 文件分类
     * @return 上传结果列表
     */
    CompletableFuture<List<Map<String, Object>>> uploadMultipleFiles(
            List<MultipartFile> files, Long userId, String category);
    
    /**
     * 上传图片文件
     * @param file 图片文件
     * @param userId 用户ID
     * @return 上传结果
     */
    Map<String, Object> uploadImage(MultipartFile file, Long userId);
    
    /**
     * 上传音频文件
     * @param file 音频文件
     * @param userId 用户ID
     * @return 上传结果
     */
    Map<String, Object> uploadAudio(MultipartFile file, Long userId);
    
    /**
     * 上传视频文件
     * @param file 视频文件
     * @param userId 用户ID
     * @return 上传结果
     */
    Map<String, Object> uploadVideo(MultipartFile file, Long userId);
    
    /**
     * 删除文件
     * @param filePath 文件路径
     * @return 删除结果
     */
    boolean deleteFile(String filePath);
    
    /**
     * 检查文件是否存在
     * @param filePath 文件路径
     * @return 是否存在
     */
    boolean fileExists(String filePath);
    
    /**
     * 获取文件信息
     * @param filePath 文件路径
     * @return 文件信息
     */
    Map<String, Object> getFileInfo(String filePath);
}
